package br.unicamp.ic.inf300.arena.modelo.controleacesso;

import java.util.LinkedHashMap;
import java.util.Map;

public enum Perfil {
	
	ADMINISTRADOR(1, "Administrador", 4),
	FINANCEIRO(2, "Financeiro", 3),
	PRODUCAO(3, "Prod. Artistica/Logistica", 2),
	VENDEDOR(4, "Vendedor", 1);

	private int sequencial;

	private String descricao;
	
	private int nivelAcesso;
	
	private static final Map<Integer, Perfil> mapa = new LinkedHashMap<Integer, Perfil>();
	
	private Perfil(int identificacao, String descricao, int nivelAcesso) {
		this.sequencial = identificacao;
		this.descricao = descricao;
		this.nivelAcesso = nivelAcesso;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public int getSequencial() {
		return sequencial;
	}

	public void setSequencial(int identificacao) {
		this.sequencial = identificacao;
	}

	public int getNivelAcesso() {
		return nivelAcesso;
	}

	public void setNivelAcesso(int nivelAcesso) {
		this.nivelAcesso = nivelAcesso;
	}
	
	public static Perfil get(Integer sequencial) {
		return getMapa().get(sequencial);
	}
	
	private static final Map<Integer, Perfil> getMapa() {
		if(mapa.isEmpty()) {
			for (Perfil perfil : Perfil.values()) {
				mapa.put(perfil.getSequencial(), perfil);
			}
		}
		return mapa;
	}
}